﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DTO;
using BUS;

namespace GUI
{
    public partial class ChiTietPhieuGuiHang : Form
    {
        public string _mapgh { get; set; }        
        public DateTime _ngaynhap { get; set; }
        public int _kq { get; set; }
        
        public ChiTietPhieuGuiHang()
        {
            InitializeComponent();

            //Column chi tiết phiếu nhập
            DataGridViewColumn clctpgh = new DataGridViewColumn();
            DataGridViewCell cell = new DataGridViewTextBoxCell();
            clctpgh.CellTemplate = cell;
            clctpgh.HeaderText = "Mã Chi Tiết Phiếu Gửi Hàng";
            clctpgh.Name = "MACTPGH";
            clctpgh.Visible = true;
            clctpgh.Width = 170;
            gridViewCTPGH.Columns.Add(clctpgh);
            //combobox mã mặt hàng
            addCombobox();
            //Column số lượng
            DataGridViewColumn soluong = new DataGridViewColumn();
            soluong.CellTemplate = cell;
            soluong.HeaderText = "Số Lượng";
            soluong.Name = "SOLUONG";
            soluong.Visible = true;
            soluong.Width = 120;
            gridViewCTPGH.Columns.Add(soluong);
            // Column đơn giá
            DataGridViewColumn ghichu = new DataGridViewColumn();
            ghichu.CellTemplate = cell;
            ghichu.HeaderText = "Ghi Chú";
            ghichu.Name = "GHICHU";
            ghichu.Visible = true;
            ghichu.Width = 120;
            gridViewCTPGH.Columns.Add(ghichu);
        }

        // combobox mặt hàng
        public void addCombobox()
        {
            List<MatHangDTO> dtoDS = new List<MatHangDTO>();
            MatHangBUS bus = new MatHangBUS();
            dtoDS = bus.HienThi();
            DataGridViewComboBoxColumn cmbSanPham = new DataGridViewComboBoxColumn();
            cmbSanPham.HeaderText = "Sản Phẩm";
            cmbSanPham.Visible = true;
            cmbSanPham.Width = 160;
            cmbSanPham.DataSource = dtoDS;
            cmbSanPham.DisplayMember = "TENHANG";
            cmbSanPham.ValueMember = "MAMH";
            cmbSanPham.DataPropertyName = "MATHANG";
            gridViewCTPGH.Columns.Add(cmbSanPham);
        }

        public void HienThiDanhSach(string mapn)
        {
            List<ChiTietPhieuGuiHangDTO> dtoDS = new List<ChiTietPhieuGuiHangDTO>();
            ChiTietPhieuGuiHangBUS bus = new ChiTietPhieuGuiHangBUS();
            dtoDS = bus.HienThi(mapn);
            gridViewCTPGH.Rows.Clear();
            for (int i = 0; i <= dtoDS.Count - 1; i++)
            {
                gridViewCTPGH.Rows.Add(dtoDS[i].MACTPGH, dtoDS[i].MAMH, dtoDS[i].SOLUONG, dtoDS[i].GHICHU);
            }
        }

        //datetime
        public void NgayHienTai()
        {
            dtpNgayGui.Value = DateTime.Today;
        }

        private void ChiTietPhieuGuiHang_Load(object sender, EventArgs e)
        {
            if (_kq == 1)
            {
                lblChiTietPhieuGuiHang.Text = "Tạo mới Phiếu Gửi Hàng";
                lblChiTietPhieuGuiHang.Location = new System.Drawing.Point(200, 13);
                NgayHienTai();
                btnCapNhat.Enabled = false;
            }
            else if (_kq == 2)
            {
                lblChiTietPhieuGuiHang.Text = "Cập Nhập Phiếu Gửi Hàng";
                lblChiTietPhieuGuiHang.Location = new System.Drawing.Point(200, 13);
                txtMAPGH.Enabled = false;
                txtMAPGH.Text = _mapgh;
                dtpNgayGui.Value = _ngaynhap;
                HienThiDanhSach(_mapgh);
                btnThem.Enabled = false;
                gridViewCTPGH.Columns[0].ReadOnly = true;
            }
            else if (_kq == 3)
            {
                txtMAPGH.Text = _mapgh;
                txtMAPGH.Enabled = false;
                lblChiTietPhieuGuiHang.Text = "Phiếu Gửi Hàng";
                lblChiTietPhieuGuiHang.Location = new System.Drawing.Point(200, 13);
                NgayHienTai();
                btnCapNhat.Enabled = false;
                btnThem.Enabled = false;
                HienThiDanhSach(_mapgh);
                gridViewCTPGH.ReadOnly = true;
            }
            else
            {
                lblChiTietPhieuGuiHang.Text = "Phiếu Gửi Hàng";
                lblChiTietPhieuGuiHang.Location = new System.Drawing.Point(200, 13);
                NgayHienTai();
                btnCapNhat.Enabled = false;
            }
        }
        

        private void btnThoat_Click(object sender, EventArgs e)
        {           
            Close();
        }

        private void btnThem_Click(object sender, EventArgs e)
        {          
            if (txtMAPGH.Text == "")
            {
                MessageBox.Show("Mã Phiếu Gửi Không Được Để Trống");
                return;
            }
            //if (kiemtrarong() == 0 || kiemtraso() == 0)
            //{
            //    return;
            //}

            PhieuGuiHangBUS busPG = new PhieuGuiHangBUS();
            PhieuGuiHangDTO dto = new PhieuGuiHangDTO();

            if (busPG.KiemTraMAPGH(txtMAPGH.Text) == 1)
            {
                MessageBox.Show("Thêm Thất Bại Vì Đã Tồn Tại Mã Phiếu Gửi Này");
                return;
            }

            if (kiemtrarong() == 0)
            {
                MessageBox.Show("Chi Tiết Phiếu Gửi Không Được Để Trống.");
                return;
            }
            if (kiemtraso() == 0)
            {
                MessageBox.Show("Số Lượng Và Đơn Giá Phải Là Số.");
                return;
            }
            if (kiemtraCTPGH() == 0)
            {
                MessageBox.Show("Mã Chi Tiết Phiếu Gửi Đã Tồn Tại");
                return;
            }

            dto.MAPGH = txtMAPGH.Text;            
            dto.NGAYGUI = dtpNgayGui.Value;            
            try
            {
                if (busPG.ThemPGH(dto) == 1)
                {
                    for (int i = 0; i < gridViewCTPGH.Rows.Count - 1; i++)
                    {
                        ChiTietPhieuGuiHangDTO dtoCTPGH = new ChiTietPhieuGuiHangDTO();
                        dtoCTPGH.MACTPGH = gridViewCTPGH.Rows[i].Cells[0].Value.ToString();
                        dtoCTPGH.MAPGH = txtMAPGH.Text;
                        dtoCTPGH.MAMH = gridViewCTPGH.Rows[i].Cells[1].Value.ToString();
                        dtoCTPGH.SOLUONG = int.Parse(gridViewCTPGH.Rows[i].Cells[2].Value.ToString());
                        dtoCTPGH.GHICHU = gridViewCTPGH.Rows[i].Cells[3].Value.ToString();
                        try
                        {
                            ChiTietPhieuGuiHangBUS bus = new ChiTietPhieuGuiHangBUS();
                            bus.ThemCTPGH(dtoCTPGH);
                        }
                        catch
                        {
                            MessageBox.Show("Thêm Chi Tiết Phiếu Gửi Hàng Thất Bại");
                            return;
                        }
                    }
                    MessageBox.Show("Thêm Thành Công");
                }
                else
                    MessageBox.Show("Thêm Thất Bại");
            }
            catch
            {
                MessageBox.Show("Thêm thất bại");
            }
        }

        private void btnCapNhat_Click(object sender, EventArgs e)
        {
            if (txtMAPGH.Text == "")
            {
                MessageBox.Show("Mã Phiếu Gửi Không Được Để Trống");
                return;
            }            

            PhieuGuiHangBUS busPG = new PhieuGuiHangBUS();
            PhieuGuiHangDTO dto = new PhieuGuiHangDTO();

            //if (busPG.KiemTraMAPGH(txtMAPGH.Text) == 1)
            //{
            //    MessageBox.Show("Cập Nhật Thất Bại Vì Đã Tồn Tại Mã Phiếu Gửi Này");
            //    return;
            //}

            if (kiemtrarong() == 0)
            {
                MessageBox.Show("Chi Tiết Phiếu Gửi Không Được Để Trống.");
                return;
            }
            if (kiemtraso() == 0)
            {
                MessageBox.Show("Số Lượng Và Đơn Giá Phải Là Số.");
                return;
            }
            //if (kiemtraCTPGH() == 0)
            //{
            //    MessageBox.Show("Mã Chi Tiết Phiếu Gửi Đã Tồn Tại");
            //    return;
            //}

            dto.MAPGH = txtMAPGH.Text;            
            dto.NGAYGUI = dtpNgayGui.Value;            
            try
            {
                if (busPG.CapNhatPGH(dto) == 1)
                {
                    try
                    {
                        //cap nhat vao bang Chi tiet phieu GUI
                        for (int i = 0; i < gridViewCTPGH.Rows.Count - 1; i++)
                        {
                            ChiTietPhieuGuiHangDTO dtoCTPGH = new ChiTietPhieuGuiHangDTO();
                            dtoCTPGH.MACTPGH = gridViewCTPGH.Rows[i].Cells[0].Value.ToString();
                            dtoCTPGH.MAPGH = txtMAPGH.Text;
                            dtoCTPGH.MAMH = gridViewCTPGH.Rows[i].Cells[1].Value.ToString();
                            dtoCTPGH.SOLUONG = int.Parse(gridViewCTPGH.Rows[i].Cells[2].Value.ToString());
                            dtoCTPGH.GHICHU = gridViewCTPGH.Rows[i].Cells[3].Value.ToString();
                            try
                            {
                                ChiTietPhieuGuiHangBUS bus = new ChiTietPhieuGuiHangBUS();
                                bus.CapNhatCTPGH(dtoCTPGH);
                            }
                            catch
                            {
                                MessageBox.Show("Cập nhật Thất Bại");
                                return;
                            }                            
                        }
                        MessageBox.Show("Cập nhật Thành Công!");
                    }
                    catch
                    {
                        MessageBox.Show("Cập nhật Thất Bại");
                    }
                }
                else
                    MessageBox.Show("Cập nhật Thất Bại");
            }
            catch
            {
                MessageBox.Show("Cảm Phiền Nhập Số Nguyên Vào Số Lượng Tồn");
            }
        }

        private int kiemtraso()
        {
            for (int i = 0; i < gridViewCTPGH.Rows.Count - 1; i++)
            {
                try
                {
                    double soluong = Convert.ToDouble(gridViewCTPGH.Rows[i].Cells[2].Value);                   
                }
                catch
                {
                    MessageBox.Show("Cảm phiền nhập lại giá trị số vào cột Số lượng và Đơn giá");
                    return 0;
                }
            }
            return 1;
        }

        //kiểm tra các dòng nhập liệu trong datagridview có rỗng không
        private int kiemtrarong()
        {
            for (int j = 0; j < gridViewCTPGH.ColumnCount; j++)
            {
                if (gridViewCTPGH.Rows[0].Cells[j].Value == null)
                {
                    MessageBox.Show("Cảm phiền nhập đầy đủ thông tin Chi Tiết Phiếu Nhập.");
                    return 0;
                }
            }
            for (int i = 1; i < gridViewCTPGH.Rows.Count - 1; i++)
            {
                for (int j = 0; j < gridViewCTPGH.ColumnCount; j++)
                {
                    if (gridViewCTPGH.Rows[i].Cells[j].Value == null)
                    {
                        MessageBox.Show("Cảm phiền nhập đầy đủ thông tin Chi Tiết Phiếu Nhập.");
                        return 0;
                    }
                }
            }
            return 1;
        }

        //kiểm tra mã chi tiết phiếu gửi
        private int kiemtraCTPGH()
        {
            ChiTietPhieuGuiHangBUS bus = new ChiTietPhieuGuiHangBUS();
            if (bus.KiemTraCTPGH(gridViewCTPGH.Rows[0].Cells[0].Value.ToString()) == 1)
            {
                return 0;
            }

            for (int i = 1; i < gridViewCTPGH.Rows.Count - 1; i++)
            {
                for (int j = 0; j < gridViewCTPGH.ColumnCount; j++)
                {
                    if (bus.KiemTraCTPGH(gridViewCTPGH.Rows[i].Cells[j].Value.ToString()) == 1)
                    {
                        return 0;
                    }
                }
            }
            return 1;
        }
    }
}
